#include<bits/stdc++.h>
using namespace std;
typedef long long ll;


void solve(){
    int n,m;
    cin>>n>>m;
    vector<vector<int>> grid(n,vector<int>(m));
    vector<vector<int>> dp(n,vector<int>(m,-0x3f3f3f3f));
    vector<int> nums(n+m,0);
    int mn=0x3f3f3f3f;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>grid[i][j];
        }
    }
    for(int i=0;i<n+m-1;i++){
        cin>>nums[i];
    }
    dp[0][0]=grid[0][0]-nums[0];
    for(int i=1;i<n;i++){
        dp[i][0]=dp[i-1][0]+grid[i][0]-nums[i];
    }
    for(int i=1;i<m;i++){
        dp[0][i]=dp[0][i-1]+grid[0][i]-nums[i];
    }
    for(int i=1;i<n;i++){
        for(int j=1;j<m;j++){
            dp[i][j]=max(dp[i-1][j],dp[i][j-1])+grid[i][j]-nums[i+j];
            mn=min(dp[i][j],mn);
        }
    }
    cout<<max(0,-mn);
}

int main(){
	// ios::sync_with_stdio(0);
	// cin.tie(0),cout.tie(0);
	int _=1;
	// cin>>_;
	while(_--){
		solve();
	}
	return 0;
}
